package eva.savant.business.contabilidad.view

import eva.savant.core.view.Bean
import groovy.sql.Sql

import javax.annotation.PostConstruct
import javax.faces.bean.ManagedBean
import javax.faces.bean.SessionScoped

@SessionScoped
@ManagedBean(name = 'IMSistemaLGV')
public class IMSistemaLGV extends Bean {

  BigDecimal monto= 3.8

  def sql, mes, lsMes, lsPlanilla

  class Mes { def nombre, feriado, laboral }

  class Planilla { def mes, id, nombre, falto, vacacion, trabajado, pasaje }

  @PostConstruct
  public void cleanEntity() {

    lsMes= new ArrayList<Mes>()

    //sql= Sql.newInstance('jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=X:/Workspace/Confeccion/Data.mdb;','Administrador','Dabdub12','sun.jdbc.odbc.JdbcOdbcDriver')

    //sql= Sql.newInstance('jdbc:ucanaccess://X:/Workspace/Confeccion/Data.mdb','','Dabdub12','net.ucanaccess.jdbc.UcanaccessDriver')

    sql= Sql.newInstance('jdbc:odbc:LGV','Administrador','Dabdub12','sun.jdbc.odbc.JdbcOdbcDriver')

    sql.eachRow('select * from mes where activo=TRUE') { lsMes.add new Mes(nombre:it.mes,feriado:it.feriados,laboral:it.laborales) }
  }

  public void uiRun() {

    lsPlanilla= new ArrayList<Mes>()


    def m; for(x in lsMes) if(x.nombre.equalsIgnoreCase(mes)) m= x; if(m == null) return


    sql.eachRow("select p.mes, e.[id empleado] as id, e.nombre, p.falto, p.vacacion from planilla as p inner join empleado as e on e.[id empleado]=p.[id empleado] where mes=$m.nombre") {

    def mes= it.mes, id= it.id, nombre= it.nombre, falto= it.falto, vacacion= it.vacacion

    def trabajado= m.laboral - (falto + vacacion)

    def pasaje= (trabajado * monto)

    lsPlanilla.add new Planilla(mes:mes,id:id,nombre:nombre,falto:falto,vacacion:vacacion,trabajado:trabajado,pasaje:pasaje)

    }

  }

  public void uiSave() {

    for(x in lsPlanilla)

    sql.executeUpdate "update planilla set pasajes=$x.pasaje where mes=$x.mes and [id empleado]=$x.id"


    lsPlanilla= new ArrayList<Mes>()

    addInfoMessage 'Se actualizo correctamente los pasajes'
  }

}


